﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;

namespace ERP.Common.DTO
{
    /// <summary>
    /// 物料产品分类添加DTO
    /// </summary>
    public class MaterialTypeAddDTO
    {
        /// <summary>
        /// 主键
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// 物料名称，对应数据库表中 MaterialTypeName 字段，不能为空，
        /// 是物料类型的核心描述信息，用于在页面展示、搜索、区分不同物料类型，如“原材料”“半成品”等
        /// </summary>
        public string MaterialTypeName { get; set; } = string.Empty;

        /// <summary>
        /// 排序值，对应数据库表中 "Index" 字段（注意：字段名带引号是因为 Index 在 SQL 中是关键字，此处映射需特殊处理 ），可为空，
        /// 用于控制物料类型在列表、树形结构等展示场景中的排列顺序，数值越小通常越靠前显示，方便业务上调整展示优先级
        /// </summary>
        public int? Index { get; set; }

        /// <summary>
        /// 父级编号，对应数据库表中 ParentId 字段，可为空，
        /// 用于构建物料类型的树形层级关系，若为 null 表示当前物料类型是顶级分类；通过该属性可实现父子分类的嵌套展示、递归查询等功能，
        /// 例如“电子产品”作为父级，“手机”“电脑”作为子级，ParentId 存储“电子产品”的 Id 来建立关联
        /// </summary>
        public int? ParentId { get; set; }

        /// <summary>
        /// 状态，对应数据库表中 State 字段，可为空，
        /// 用于标记物料类型的业务状态，具体状态含义可根据业务约定（如 0 表示禁用、1 表示启用等 ），
        /// 辅助业务逻辑判断物料类型是否可用、是否参与特定业务流程等
        /// </summary>
        public int? State { get; set; }

        /// <summary>
        /// 创建时间，对应数据库表中 CreateTime 字段，不能为空，
        /// 记录物料类型在系统中创建的具体时间点，可用于按时间范围查询（如查询最近创建的物料类型 ）、
        /// 数据统计（统计不同时间段创建的物料类型数量 ）、追溯数据创建历史等场景
        /// </summary>
        public DateTime CreateTime { get; set; }
    }
}
